索引
索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用系统的性能直接与索引的合理有关。
oracle索引的建立
语法:CREATE INDEX index ON table (column[, column]…);
补充说明:
1.oracle中的索引是以表的形式存在,Oracle自动使用并维护索引,插入、删除、更新表后,自动更新索引,所以频繁insert和update的字段不适合建立索引。
2.索引需要定期的重建,且一张表的索引最好不要超过5个
3.索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索方式。索引直接指向包含所查询值的行的位置,减少磁盘I/O,从而提高检索效率
4.索引在逻辑上和物理上都与相关的表和数据无关,当创建或者删除一个索引时,不会影响基本的表
5.当建立Primary Key(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立
6.LONG(可变长字符串数据,最长2G)和LONG RAW(可变长二进制数据,最长2G)列不能创建索引
7.使用create index时要将最常查询的列放在最前面
8.经常进行连接查询的列应该创建索引,小表无需建立索引
9.列中有很多空值,但经常查询该列上非空记录时可以建立索引
10.对于基数大的列适合建立B树索引,对于基数小的列适合简历位图索引
11.至少要包含组合索引的第一列(即如果索引建立在多个列上,只有它的第一个列被where子句引用时,优化器才会使用该索引)
- 如果有两个或者以上的索引,其中有一个唯一性索引,而其他是非唯一,这种情况下oracle将使用唯一性索引而完全忽略非唯一性索引
修改索引
1.重命名索引1
alter index index_sno rename to bitmap_index;
- 合并索引(表使用一段时间后在索引中会产生碎片,此时索引效率会降低,可以选择重建索引或者合并索引,合并索引方式更好些,无需额外存储空间,代价较低)
1
alter index index_sno coalesce;
3.重建索引
方式一:删除原来的索引,重新建立索引
方式二:1
alter index index_sno rebuild;
删除索引
1 | drop index index_sno; |
查看索引
1 | select * from all_indexes where table_name='student'; |